#include <stdio.h>
#include <sys/types.h>
#include <pthread.h>

#include <unistd.h>

// 定义全局变量num
int num = 100;

// 定义线程任务函数
void * my_task(void *arg){
    // 获取当前线程号
    pthread_t cur_tid = pthread_self();

    for(int i=0;i<10;i++){
        printf("thread %lu: i=%d->num(%d)\n", cur_tid, i, num);
        num--;
        usleep(200);
    }

    return NULL;
}

int main(int argc, char const *argv[])
{
    // 创建2个线程
    pthread_t tid1, tid2;
    int ret = pthread_create(&tid1, NULL, my_task, NULL);
    printf("tid1 create result is %d\n", ret);

    ret = pthread_create(&tid2, NULL, my_task, NULL);
    printf("tid2 create result is %d\n", ret);

    // 线程创建成功后，自动由CPU调度运行（使用时间片轮转）
    
    // 等待某一个子线完成
    pthread_join(tid1, NULL);
    pthread_join(tid2, NULL);
    printf("---main over---\n"); // 进程马上结束，子线程还能运行吗？答： 不能运行的

    
    return 0;
}
